// 演示会话管理
import express from 'express';
import session from 'express-session';

const app = express();
// 设置会话管理
app.set('trust proxy', 1) // 设置信任的代理服务器
app.use(session({
  // 初始的密钥，用于加密会话数据
  secret: '53786860b1148901abe96ce13b16dacb17915be148f451f318b34d195fffc134',
  resave: false,
  saveUninitialized: true,
  cookie: {
    secure: false,
    httpOnly: false,
    maxAge: 30 * 60 * 1000,
  }
}));
// 解析 body 中间件
app.use(express.urlencoded({ extended: true }));
// 设置模板引擎
app.set('view engine', 'ejs');
app.set('views', './views');

app.get('/', (req, res) => {
  // 获取会话数据
  const username = req.session.username;
  res.render('session', { username });
});

app.get('/login', (req, res) => {
  res.send(`
    <form action="/login" method="post">
      <label>用户名: <input type="text" name="username"></label>
      <label>密码: <input type="password" name="password"></label>
      <button type="submit">登录</button>
    </form>
  `);
})

app.post('/login', (req, res) => {
  const { username, password } = req.body;
  // 验证用户名和密码
  if (username === 'admin' && password === '123456') {
    req.session.username = username;
  }
  res.redirect('/');
})

app.get('/logout', (req, res) => {
  // 删除会话数据，清理登录信息
  req.session.destroy();
  res.redirect('/');
});

app.listen(3000, () => {
  console.log('服务器已启动，监听端口 3000。http://localhost:3000');
});